﻿using System;
using System.Collections.Generic;

namespace LibBot
{
    public interface IPlugin
    {
        /// <summary>
        /// The name of the plug-in.
        /// </summary>
        string Name { get; }

        /// <summary>
        /// The current version of the plug-in.
        /// </summary>
        string Version { get; }

        /// <summary>
        /// A brief description of the plug-in.
        /// </summary>
        string Description { get; }

        /// <summary>
        /// Character list containing the bot flags reserved by the plug-in. Bot flags are case sensitive and two plug-ins may not use the same bot flag.
        /// </summary>
        List<char> BotFlags { get; }

        /// <summary>
        /// String list containing the commands used by the plug-in. Commands are case in-sensitive.
        /// </summary>
        List<string> Commands { get; }

        ///// <summary>
        ///// Various settings tied to the plug-in.
        ///// </summary>
        //ISettings Settings { get; }

        /// <summary>
        /// The entry point for the plug-in.
        /// </summary>
        /// <param name="Host">LibBot gives the host class in which a plug-in can use to control the bot.</param>
        void Initialize(Core Host);
    }
}
